/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Usuarios;


import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import webs_personas.ServerPersonasExecute;
import webs_personas.UsuAsse;
import webs_personas.UsuAsseUsuAsseItem;

/**
 *
 * @author Asus
 */
public class Fachada {
    public static Fachada instance;
    
    private Fachada(){
        
    }
    public static Fachada getInstance(){
        if (instance==null){
            instance=new Fachada();
        }
        return instance;
    }
    
    
    
    
    
    public static UsuAsse usuariosConCI(String CI){
       /* UsuAsse u =new UsuAsse();
        try {
	webs_personas.ServerPersonas service = new webs_personas.ServerPersonas();
	webs_personas.ServerPersonasSoapPort port = service.getServerPersonasSoapPort();
	 // TODO initialize WS operation arguments here
	webs_personas.ServerPersonasExecute parameters = new ServerPersonasExecute();
	// TODO process result here
        parameters.setNroDoc(CI);
	webs_personas.ServerPersonasExecuteResponse result = port.execute(parameters);
	u= result.getUsuasse();
        
    } catch (Exception ex) {
	
    }
        return u;
        
        */
        //DATOS HARDCODED
        UsuAsseUsuAsseItem u=new UsuAsseUsuAsseItem();
        UsuAsseUsuAsseItem u1=new UsuAsseUsuAsseItem();
        u.setNroDoc("11111111");
       
u.setNombre1("YAIR");
u.setPerSexo("M");
u.setNombre2("FELIPE");
u.setApellido1("SANTIAGO");
u.setTipoDoc("OTR");
        try {
            u.setFechaNac(getXMLCalendar("1959-05-25"));
        } catch (Exception ex) {
            Logger.getLogger(Fachada.class.getName()).log(Level.SEVERE, null, ex);
        }
        
 u.setTelefono1("43389184");       
        
        UsuAsse uA =new UsuAsse();
          
          
          uA.getUsuAsseUsuAsseItem().add(u);
          
          
                u1.setNroDoc("11111111");
       
u1.setNombre1("PEPE");
u1.setNombre2("");
u1.setApellido1("Guerra");
u1.setTipoDoc("OTR");
u1.setCodpais("Uruguay");
u1.setDepartamento("Maldonado");
u1.setCodloc(1);
        try {
            u.setFechaNac(getXMLCalendar("1991-11-11"));
        } catch (Exception ex) {
            Logger.getLogger(Fachada.class.getName()).log(Level.SEVERE, null, ex);
        }
        
 u1.setTelefono1("99999999");    
           uA.getUsuAsseUsuAsseItem().add(u1);
           
       UsuAsse uA2 =new UsuAsse();        
       UsuAsseUsuAsseItem u2=new UsuAsseUsuAsseItem();
       
        u.setNroDoc("11111111");
u2.setNroDoc("22222222");       
u2.setNombre1("John");
u2.setNombre2("");
u2.setApellido1("MC lain");
u2.setTipoDoc("OTR");
   u2.setCodpais("Argentina");   
   u2.setDepartamento("BA");   
 u2.setTelefono1("43389184");       
        uA2.getUsuAsseUsuAsseItem().add(u2);        
 if (CI.equals("22222222"))return uA2;          
if (CI.equals("11111111"))return uA;          
           return null;
           
 }
    
    
    
    public static List<Usuario> obtenerUsuarios(String CI){
      
          
           List<Usuario> usuarios = new ArrayList<Usuario>();
             UsuAsse usu=usuariosConCI(CI); 
        List <UsuAsseUsuAsseItem>  lista=new ArrayList<UsuAsseUsuAsseItem>();
        if(usu!=null){
               lista=usuariosConCI(CI).getUsuAsseUsuAsseItem();
        }
           if(lista!=null){
               
           
          for(int i=0; i<lista.size();i++){
             
              UsuAsseUsuAsseItem u = lista.get(i);
               
              usuarios.add(new Usuario(u));     
            }
        
           } 
          return usuarios;
        }
    
    public Usuario ObtenerUsuario(String CI, int index){
        UsuAsse usu=usuariosConCI(CI); 
        List <UsuAsseUsuAsseItem>  lista=new ArrayList<UsuAsseUsuAsseItem>();
        if(usu!=null){
               lista=usuariosConCI(CI).getUsuAsseUsuAsseItem();
        }
       
          
          if(lista.size()>=index){
              UsuAsseUsuAsseItem u = lista.get(index);
                  
          return new Usuario(u);
          }  
          return null;
        }
    
    //ESTE METODO SOLO SE HIZO PARA HARDCODEAR DATOS
    
    public static XMLGregorianCalendar getXMLCalendar(String strDate) throws Exception{
        Calendar sDate = Calendar.getInstance();
        DatatypeFactory dtf = DatatypeFactory.newInstance();
		XMLGregorianCalendar calendar = null;
        try{
        	
		SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-M-d");
		
		if(strDate != null)
		{
			sDate.setTime(DATE_FORMAT.parse(strDate));
			calendar = dtf.newXMLGregorianCalendar();
			calendar.setYear(sDate.get(Calendar.YEAR));
			calendar.setDay(sDate.get(Calendar.DAY_OF_MONTH));
			calendar.setMonth(sDate.get(Calendar.MONTH)+ 1);			
		}    
        }catch(Exception ex){
            
        }
		return calendar;
	}

    }
    

